#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <unordered_set>
using namespace std;
const int N=1e5+10;

int prime[N],cnt;
bool st[N];
void init()
{
	int n=N-1;

	for(int i=2;i<=n;i++)
	{
		if(!st[i])
		{
			prime[cnt++]=i;
		}
		for(int j=0;j<cnt && prime[j]<=n/i;j++)
		{
			st[prime[j]*i]=true;
			if(i%prime[j]==0)
				break;
		}
		
	}
}
int main()
{
	init();
	int n;
	cin>>n;
	if(n>2)
	{
		cout<<2<<endl;
	}
	else{
		cout<<1<<endl;
	}
	cout<<1;
	for(int i=3;i<=1+n;i++)
	{
		if(!st[i])
			cout<<' '<<1;
		else
			cout<<' '<<2;
	}
	return 0;
}
